#include<iostream>
#include<cstdio>
#include<map>

using namespace std; 

#define N 	16

int  seq[N][N]; 
int n; 
int fin; 

bool dfs(int lvl)
{
	int j, m=lvl+1; 
	int first, last; 
	map<int,int> mp; 
	
	if (lvl==n-1) {
		return true; 
	}
	
	for (first=1; first<seq[lvl][0]; first++) {
		seq[lvl+1][0] = first; 
		if (lvl==n-2) {
			mp.clear(); 
			mp[first] = 1; 
		}
		for (j=1; j<m+1; j++) {
			last = seq[lvl][j-1] - seq[lvl+1][j-1]; 
			if (last<1 || mp.find(last)!=mp.end()) {
				break; 
			}
			seq[lvl+1][j] = last; 
			if (lvl==n-2) {
				mp[last] = 1; 
			}
		}
		if (j<m+1)
			continue; 
		if (dfs(lvl+1)==true) {
			return true; 
		}
	}
	return false; 
}

int main()
{
	int i; 
	
	freopen("p1118_2.in", "r", stdin); 
	cin>>n>>fin; 
	
	seq[0][0] = fin; 
	if (dfs(0)==false)
		return 0; 
	for (i=0; i<n; i++) {
		printf("%d ", seq[n-1][i]); 
	}
	printf("\n");  
	return 0; 
}


